1. 为什么要使用缓存

在Django中,当用户请求到达视图后,视图会先从数据库提取数据放到模板中进行动态渲染,渲染后的结果就是用户看到的网页。如果用户每次请求都从数据库提取数据并渲染,将极大降低性能,不仅服务器压力大,而且客户端也无法即时获得响应。如果能将渲染后的结果放到速度更快的缓存中,每次有请求过来,先检查缓存中是否有对应的资源,如果有,直接从缓存中取出来返回响应,节省取数据和渲染的时间,不仅能大大提高系统性能,还能提高用户体验

2. cache 的介绍

  • cache是Django提供的缓存系统和redis用法类似(推荐使用 redis)

  • cache 缓存系统是基于Memcached事项的

  • cache 只能缓存字符串

3. set(key, val, time)

  • 设置缓存

  • 参数:
    • key: 缓存名
    • val: 需要缓存的值
    • time: 超时时间 -> 可以忽略不存

from django.core.cache import cache

cache.set('my_key', 'hello', 30)

4. get(key)

  • 获取缓存

  • 参数:
    • key: 缓存名

from django.core.cache import cache

my_key = cache.get('my_key')  # hello
my_key = cache.get('my_key')  # 等待30秒后 -> None

5. add(key, value)

  • 如果名为key的缓存名不存在就进行添加

  • 参数:
    • key: 缓存名
    • val: 需要缓存的值

from django.core.cache import cache

cache.add('name', 'Kevin')

6.set_many(dict)

  • 批量添加缓存

  • 参数:
    • dict: 存放着缓存名和需要缓存的值的键值对

from django.core.cache import cache

cache.set_many({'a': 1, 'b': 2, 'c': 3})

7.get_many(list)

  • 批量获取缓存

  • 参数:
    • list: 存放着缓存名的列表

from django.core.cache import cache

cache_list = cache.get_many(['a', 'b', 'c'])  # {'b': 2, 'a': 1, 'c': 3}

8. delete(key)

  • 删除缓存

  • 参数:
    • key: 缓存名

from django.core.cache import cache

cache.delete('a')

9.delete_many(list)

  • 批量删除缓存

  • 参数:
    • list: 存放着缓存名的列表

from django.core.cache import cache

cache.delete_many(['a', 'b', 'c'])

10.更加详细的用法